﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using ContactManagement.AppCode.MailManagement;
using ContactManagement.Models;
using Microsoft.Web.Helpers;

namespace ContactManagement.Controllers
{
    public class HomeController : Controller
    {
        /// <summary>
        /// Anzeigen der Indexseite
        /// </summary>
        public ActionResult Index()
        {
            ViewBag.Message = "Welcome to ASP.NET MVC!";

            return View();
        }

        /// <summary>
        /// Anzeigen der Impressumseite.
        /// </summary>
        public ActionResult Impressum()
        {
            return View();
        }

        /// <summary>
        /// Anzeigen des Kontaktformulars
        /// </summary>
        public ActionResult Contact()
        {
            ContactModel contactModel = new ContactModel();
            return View(contactModel);
        }

        /// <summary>
        /// Beim Absenden des Kontaktformulars wird diese Nachricht angezeigt.
        /// </summary>
        [HttpPost]
        public ActionResult Contact(ContactModel model)
        {
            if (ReCaptcha.Validate())
            {
                if (ModelState.IsValid)
                {
                    ContactMail contactMail = new ContactMail();
                    if (contactMail.SendMail(model))
                    {
                        //Auf die Erfolgsseite verweisen, wenn die Mail erfolgreich versendet werden konnte
                        return RedirectToAction(EActionHome.ContactSuccess.ToString());
                    }
                    else
                    {
                        //Fehlermeldung anzeigen, wenn die Mail nicht erfolgreich versendet werden konnte.
                        ModelState.AddModelError("", App_GlobalResources.SystemMessages.SendContactMailErrorRESX);
                    }
                }
            }
            else
            {
                ModelState.AddModelError("", App_GlobalResources.SystemMessages.CaptchaWasWrongRESX);
            }

            //Das aktuelle Formular erneut anzeigen.
            return View(model);
        }

        /// <summary>
        /// Bei Erfolgreicher Kontaktaufnahme wird diese Seite angezeigt.
        /// </summary>
        public ActionResult ContactSuccess()
        {
            return View();
        }
    }
}
